package offer;

import binaryTree.basic.TreeNode;

public class  Offer28 {

//    public boolean isSymmetric(TreeNode root) {
//        if (root==null){
//            return  true;
//        }
//
//        if (root.left==null&&root.right==null){
//            return  true;
//        }
//        if (root.left==null&&root.right!=null||root.left!=null&&root.right==null||root.left.val!=root.right.val){
//            return  false;
//        }
//        return  isSymmetric(root.left)&&isSymmetric(root.right);
//
//    }


    public boolean isSymmetric(TreeNode root) {
        return root == null ? true : recur(root.left, root.right);
    }
    boolean recur(TreeNode L, TreeNode R) {
        if(L == null && R == null) return true;
        if(L == null || R == null || L.val != R.val) return false;
        return recur(L.left, R.right) && recur(L.right, R.left);
    }

}
